package cromosomas;

public class Hormiga {
	
		private enum Direccion { NORTE,ESTE,SUR,OESTE}; 
		private int posx;
		private int posy;
		private Direccion dir;
		private Tablero tab;
		private int comida;

		public Hormiga(Tablero t){
			tab=t;
			posx=0;
			posy=0;
			dir = Direccion.ESTE;
			comida=0;
			if(tab.getCelda(posx, posy)==1)
				comida++;
			tab.setCelda(posx,posy,2);
		}
		
		public int getComida(){
			return comida;
		}
		
		public void Avanza(){
			switch (dir){
				case NORTE: 
					posy--;
					if(posy<0)
						posy = 32 + posy;
					break;
				case SUR:
					posy = (++posy)%32;
					break;
				case ESTE:
					posx = (++posx)%32;
					break;
				case OESTE:
					posx--;
					if(posx<0)
						posx = 32 + posx;
					break;
			}
			if(tab.getCelda(posx, posy)==1)
				comida++;
			tab.setCelda(posx,posy,2);
		}
		
		public void giraDerecha(){
			switch (dir){
				case NORTE: 
					dir = Direccion.ESTE;
					break;
				case SUR:
					dir = Direccion.OESTE;
					break;
				case ESTE:
					dir = Direccion.SUR;
					break;
				case OESTE:
					dir = Direccion.NORTE;
					break;
			}
		}
		
		public void giraIzquierda(){
			switch (dir){
				case NORTE: 
					dir = Direccion.OESTE;
					break;
				case SUR:
					dir = Direccion.ESTE;
					break;
				case ESTE:
					dir = Direccion.NORTE;
					break;
				case OESTE:
					dir = Direccion.SUR;
					break;
			}
		}
		
		public boolean hayComidaDelante(){
			int aux=0;
			switch (dir){
				case NORTE: 
					aux = posy-1;
					if(aux<0)
						aux = 32 + aux;
					return tab.getCelda(posx, aux)==1;
				case SUR:
					return tab.getCelda(posx, (posy+1)%32)==1;
				case ESTE:
					return tab.getCelda( (posx+1)%32, posy)==1;
				case OESTE:
					aux = posx-1;
					if(aux<0)
						aux = 32 + aux;
					return tab.getCelda(aux, posy)==1;	
				default:
					return false;
			}
		}
}